/*#############################################################################
#    Copyright (C) 2008 by  Rene Alejandro Lobo Quintero raloboq@unal.edu.co, #
#    Julián Ricardo Mahecha D'Maria  jrmahechad@unal.edu.co,                  #
#    Diego Alejandro Montoya Cruz damontoyac@unal.edu.co                      #
#                                                                             #
#    This program is free software; you can redistribute it and#or modify     #
#    it under the terms of the GNU General Public License as published by     #
#    the Free Software Foundation; either version 2 of the License, or        #
#    (at your option) any later version.                                      #
#                                                                             #
#    This program is distributed in the hope that it will be useful,          #
#    but WITHOUT ANY WARRANTY; without even the implied warranty of           #
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
#    GNU General Public License for more details.                             #
#                                                                             #
#    You should have received a copy of the GNU General Public License        #
#    along with this program; if not, write to the                            #
#    Free Software Foundation, Inc.,                                          #
#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                #
#############################################################################*/

#ifndef ROCKOLA_H
#define ROCKOLA_H

#include <QtGui/QMainWindow>
#include <QDir>
#include <QListWidgetItem>
/*! \brief Archivo en donde esta la logica de la aplicacion y las funciones usadas.
  \class Rockola rockola.h
  <h2>Creadores</h2>
  *Rele A. Lobo Q. \n
  *Julian R. Mahecha D. \n
  *Diego A. Montoya C. \n
  <h2>Funcionamiento</h2>
  El programa se encarga de quemar distribuciones de linux y contenido libre.
  se encuentra dibidido en dos partes principalmente la parte encargada de quemar las distribuciones y la parte encargada de quemar el contenido libre.
  <h3>Quemar distribuciones</h3>
  Para quemar las distribuciones lo que se hace es buscar en la carpeta las distintas imagenes de CD o DVD que existan y se muestran.
  Una vez se muestran se selecciona la distribucion a quemar con lo cual se muestra la descripcion de la respectiva distribucion.
  <h3>Quemar contenido libre</h3>
  Para quemar contenido libre se selecciona el tipo del contenido que se quiere quemar, dependiendo de lo seleccionado se muestrab distintas listas
  con los archivos del tipo seleccionado.
  en caso de imagenes se muestra tambien una pequeña vista previa de la imagen seleccionada, y si se seleccionas libros o peliculas se muestras una pequeña descripcion,
  en caso de seleccionar musica solo se mostrara la lista de la musica.
  */
namespace Ui
{
    class Rockola;
}

class Rockola : public QMainWindow
{
    Q_OBJECT


public:
    /*! \brief Funcion constructora */
    Rockola(QWidget *parent = 0);
    /*! \brief Funcion destructora */
    ~Rockola();
    /*! \brief ruta del archivo seleccionado */
    QString superpath;
    /*! \brief ruta del archivo a quemar */
    QString pathQuemar;
    /*! \brief lista de rutas de los archivos a quemar */
    QStringList ListaRutas;
    /*! \brief lista de pesos de los archivos a quemar */
    QStringList ListaPesos;
    /*! \brief peso del archivo seleccionado */
    int superPeso;
    /*! \brief espacio disponible en el CD o DVD a quemar */
    int peso;
    QDir currentDir;
    QListWidgetItem NombreDistro;

    void find(int a, QString text);
    /*! \brief Funcion que abre encuentra el archivo */
    void open(int a, QString nombre, QString carpeta);
    void Limpiar();
    void openImage(QString nombre, QString carpeta);
    void AgregarItem(QString ruta);
    void AgregarPeso(int tamano);
    void QuitarItem(int pos);
    int PesoArchivo(QString carpeta, QString nombre);
    bool VerificarExiste(QString pathactual);
/*! \brief Funcion encargada de mostrar los archivos en las lista. */
    void showFiles(const QStringList &files, int a);
    void loadFile(int b, const QString &fileName);

private:
    Ui::Rockola *ui;


private slots:
    void on_pushButton_clicked();
    void on_B_ACEPTAR_clicked();
    void on_Lista_Musica_clicked(QModelIndex index);
    void on_B_Borrar_clicked();
    void on_B_AgregarMusica_clicked();
    void on_Lista_Imagenes_clicked(QModelIndex index);
    void on_Lista_Peliculas_clicked(QModelIndex index);
    void on_Lista_Libros_clicked(QModelIndex index);
    void on_C_Categoria_Peliculas_currentIndexChanged(int index);
    void on_C_Imagenes_currentIndexChanged(int index);
    void on_C_Musica_currentIndexChanged(int index);
    void on_C_Categoria_Libros_currentIndexChanged(int index);
    void on_B_Aceptar_5_clicked();
    void on_Lista_Distros_clicked(QModelIndex index);
    void on_B_AtrasVarios_clicked();
    void on_B_AtrasDistros_clicked();
    void on_B_Peliculas_2_clicked();
    void on_B_Imagenes_2_clicked();
    void on_B_Musica_2_clicked();
    void on_B_Libros_clicked();
    void on_B_Varios_clicked();
    void on_B_Distribuciones_clicked();


};

#endif // ROCKOLA_H
